﻿//--------------------------------------------------------------------------
// <copyright file="IPolicyExclusion.cs" company="Jeff Winn">
//      Copyright (c) Jeff Winn. All rights reserved.
//
//      The use and distribution terms for this software is covered by the
//      Microsoft Public License (Ms-PL) which can be found in the License.rtf 
//      at the root of this distribution.
//      By using this software in any fashion, you are agreeing to be bound by
//      the terms of this license.
//
//      You must not remove this notice, or any other, from this software.
// </copyright>
//--------------------------------------------------------------------------

namespace Winnster.CheckInPolicies.SourceAnalysis.Policy.Exclusions
{
    using System;

    /// <summary>
    /// Represents a policy exclusion.
    /// </summary>
    internal interface IPolicyExclusion : IComparable<IPolicyExclusion>
    {
        #region Properties

        /// <summary>
        /// Gets or sets a value indicating whether the exclusion is enabled.
        /// </summary>
        bool Enabled { get; set; }

        /// <summary>
        /// Gets the description of the policy exclusion.
        /// </summary>
        string Description { get; }

        #endregion

        #region Methods

        /// <summary>
        /// Determines whether the <paramref name="value"/> should be excluded from the policy.
        /// </summary>
        /// <param name="value">An <see cref="System.Object"/> to evaluate.</param>
        /// <returns><b>true</b> if the exclusion is successful; otherwise, <b>false</b>.</returns>
        bool Evaluate(object value);

        #endregion
    }
}